/**
 * Created by lizhenya on 15/6/15.
 */

jQuery(
    function($) {

        $(document).ready(function(){
            var contentButton = [];
            var contentTop = [];
            var content = [];
            var lastScrollTop = 0;
            var scrollDir = '';
            var itemClass = '';
            var itemHover = '';
            var menuSize = null;
            var stickyHeight = 0;
            var stickyMarginB = 0;
            var currentMarginT = 0;
            var topMargin = 0;
            $(window).scroll(function(event){
                var st = $(this).scrollTop();
                if (st > lastScrollTop){
                    scrollDir = 'down';
                } else {
                    scrollDir = 'up';
                }
                lastScrollTop = st;
            });
            $.fn.stickUp = function( options ) {
                // adding a class to users div
                $(this).addClass('stuckMenu');
                //getting options
                var objn = 0;
                if(options != null) {
                    for(var o in options.parts) {
                        if (options.parts.hasOwnProperty(o)){
                            content[objn] = options.parts[objn];
                            objn++;
                        }
                    }
                    if(objn == 0) {
                        console.log('error:needs arguments');
                    }

                    itemClass = options.itemClass;
                    itemHover = options.itemHover;
                    if(options.topMargin != null) {
                        if(options.topMargin == 'auto') {
                            topMargin = parseInt($('.stuckMenu').css('margin-top'));
                        } else {
                            if(isNaN(options.topMargin) && options.topMargin.search("px") > 0){
                                topMargin = parseInt(options.topMargin.replace("px",""));
                            } else if(!isNaN(parseInt(options.topMargin))) {
                                topMargin = parseInt(options.topMargin);
                            } else {
                                console.log("incorrect argument, ignored.");
                                topMargin = 0;
                            }
                        }
                    } else {
                        topMargin = 0;
                    }
                    menuSize = $('.'+itemClass).size();
                }
                stickyHeight = parseInt($(this).height());
                stickyMarginB = parseInt($(this).css('margin-bottom'));
                currentMarginT = parseInt($(this).next().closest('div').css('margin-top'));
                vartop = parseInt($(this).offset().top);
                //$(this).find('*').removeClass(itemHover);
            }
            $(document).on('scroll', function() {
                varscroll = parseInt($(document).scrollTop());
                if(menuSize != null){
                    for(var i=0;i < menuSize;i++)
                    {
                        contentTop[i] = $('#'+content[i]+'').offset().top;
                        function bottomView(i) {
                            contentView = $('#'+content[i]+'').height()*.4;
                            testView = contentTop[i] - contentView;
                            //console.log(varscroll);
                            if(varscroll > testView){
                                $('.'+itemClass).removeClass(itemHover);
                                $('.'+itemClass+':eq('+i+')').addClass(itemHover);
                            } else if(varscroll < 50){
                                $('.'+itemClass).removeClass(itemHover);
                                $('.'+itemClass+':eq(0)').addClass(itemHover);
                            }
                        }
                        if(scrollDir == 'down' && varscroll > contentTop[i]-50 && varscroll < contentTop[i]+50) {
                            $('.'+itemClass).removeClass(itemHover);
                            $('.'+itemClass+':eq('+i+')').addClass(itemHover);
                        }
                        if(scrollDir == 'up') {
                            bottomView(i);
                        }
                    }
                }



                if(vartop < varscroll + topMargin){
                    $('.stuckMenu').addClass('isStuck');
                    $('.stuckMenu').next().closest('div').css({
                        'margin-top': stickyHeight + stickyMarginB + currentMarginT + 'px'
                    }, 10);
                    $('.stuckMenu').css("position","fixed");
                    $('.isStuck').css({
                        top: '0px'

                    }, 10, function(){

                    });
                };

                if(varscroll + topMargin < vartop){
                    $('.stuckMenu').removeClass('isStuck');
                    $('.stuckMenu').next().closest('div').css({
                        'margin-top': currentMarginT + 'px'
                    }, 10);
                    $('.stuckMenu').css("position","relative");
                };

            });
        });

    });